
<?php	
	@session_start();
	
	require_once('../../lib/'.'BaseDir.inc.htm');		
	require_once(EIU_CLASS.'IOClass.htm');		
	require_once(EIU_CLASS.'Category.htm');		
	require_once(EIU_LIB.'DBCommon.class.htm');	
	
	$oDB = new DBCommon();
	$conn =  $oDB->stl_openConn();
	
	$ioObj = new io_class();
	$catObj = new category();
	
	$jsonArr["dataSearch"]["TimeStart"] = date("h:i:s:u");			
	
	//Tạo mới
	if(isset($_POST["CreateNew"])&&$_POST["CreateNew"]==1)
	{	
		$jsonStr = $_POST["JSONStr"];
		
		$data = json_decode($jsonStr);
		
		$type = 1;//Loại phiếu: Hiện tại chỉ dùng phiếu nhập
		
		/*
			Tính toán số phiếu theo thứ tự. Group by: Loại phiếu, Năm, Tháng tạo phiếu
		*/		
		
		//ID của hợp đồng
		$invcID = $data->{"ioID"};
		
		
		$ReceiptDate = strtotime($data->{"ioDate"});
		$revPerson = addslashes(json_encode($data->{"recvPeople"}));	
		$devPerson = addslashes(json_encode($data->{"devPeople"}));
		$roomOut = "";
		$recvRoom = "";
		$note = $data->{"note"};
		$ModifiedBy = $_SESSION['userID'];	
				
		$Year = date("y", $ReceiptDate); 
		$Month = date("m", $ReceiptDate); 
		
		$DiscountVND = $data->{"ioDisAmount"};
		$SubTotalVND = $data->{"ioSubAmount"};
		$VATAmountVND = $data->{"ioVatAmount"};
		$TotalVND = $data->{"ioTotalAmount"};
		$DisPercent = $data->{"ioDisPercent"};
		$VATPercent = $data->{"ioVatPercent"};
		
		$ioNumStart = intval($ioObj->getNumIOByType($type,$Year,$Month));
		$ioNumStartHasZero = $ioObj->addZeroDigit($ioNumStart + 1,3);
		
		//$IOCode = "N1203005";
		$IOCode = "N".$Year.$Month.$ioNumStartHasZero;
				
		//save IO to io_tbl		
		
		$res = $ioObj->insertIORow($invcID,$IOCode,date("y-m-d",$ReceiptDate),$revPerson,$devPerson,$note,$modifiedBy,$DiscountVND,$SubTotalVND,$VATAmountVND,$TotalVND,$DisPercent,$VATPercent);
		//print_r($res);
		//save asset list	
		$assetArr = $data->{"assList"};
		$i = 0;$j = 0;
		
		/*
			Ý tưởng
			1. Duyệt theo danh sách loại thiết bị
			2. Nếu loại thiết bị [i] có dùng barcode <=> hasBarcode = 1
				2.1. Duyệt theo số lượng của thiết bị trong loại
					2.1.1 
						$staNumByCat: Số thứ tự của thiết bị trong category;
						$staNumHasZero: số thứ tự của thiết bị đã chuyển sang dạng có Zero
						$AssCode có dạng XXXYYZZZZZ trong đó XXX: cat code; YY: năm nhập; ZZZZZ số thứ tự thiết bị trong cat theo năm
					2.1.2. Insert thiết bị xuống DB vào asset_tbl với số lượng là 1
					2.1.3. Tăng $staNumByCat lên thêm 1 đơn vị
					2.1.4. Tạo ra barcode từ $staNumByCat
			3. Nếu loại thiết bị [i] không dùng barcode <=> hasBarcode = 0
				3.1. Insert vào trong asset_tbl với AssName rỗng, AssCode rỗng với số lượng theo loại
		*/
		
		//1. Duyệt theo danh sách loại thiết bị	
		while($assetArr[$i])
		{		
			$AssName = strtoupper($assetArr[$i]->{"assName"});//Tên thiết bị
			$CATCode = $assetArr[$i]->{"assCat"};//Loại thiết bị
			$Price = $assetArr[$i]->{"assPrice"};//Giá thiết bị
			$Amount = $assetArr[$i]->{"assAmount"};//Tổng tiền thiết bị
			
			$AssWar = "";//Bảo hành thiết bị
			$QRCode = "";
			$SerialNumber = "";
			$AssDescription = $assetArr[$i]->{"assDesc"};//Mô tả thiết bị
		
			$STAID = 1;//Tình trạng thiết bị		
			$Quantity = $assetArr[$i]->{"assQt"};//Số lượng theo loại
			$Unit = strtoupper($assetArr[$i]->{"assUnit"});	//Đơn vị tính		
			
			//Không dùng barcode
			//3.1. Insert vào trong asset_tbl với AssCode rỗng với số lượng theo loại
			$AssCode = "";
			//$AssName = "";
			$STAID=1;			
			//$res = $ioObj->insertAsset($AssCode,$AssName,$CATCode,$QRCode,$SerialNumber,$AssDescription,$IOCode,$STAID,$recvRoom,$Quantity,$Unit,$ModifiedBy,$AssWar);
			$res = $ioObj->insertAsset($AssCode,$AssName,$CATCode,$QRCode,$SerialNumber,$AssDescription,$IOCode,$STAID,$recvRoom,$Quantity,$Unit,$ModifiedBy,$AssWar,$Price,$Amount);
			
					
			$i++;
		}	
		
		if($res=="OK")
		{
			$jsonArr["dataSearch"]["Message"] = "Thêm IO thành công";
			$jsonArr["dataSearch"]["Status"] = "1";
			$jsonArr["dataSearch"]["IOCode"] = $IOCode;
		}else{
			$jsonArr["dataSearch"]["Message"] = "Đã thất bại";
			$jsonArr["dataSearch"]["Status"] = "0";
		}
			
		$jsonArr["dataSearch"]["TimeFinish"] = date("h:i:s:u");
		
		$json = json_encode($jsonArr["dataSearch"]);
	}
	//Cập nhật mới danh sách
	else
	{
		$begin = "begin";
		$commit = "commit";
		$rollback = "rollback";
		
		$jsonStr = $_POST["JSONStr"];
		
		$data = json_decode($jsonStr);
		
		$type = 1;//Loại phiếu: Hiện tại chỉ dùng phiếu nhập
		
		/*
			Tính toán số phiếu theo thứ tự. Group by: Loại phiếu, Năm, Tháng tạo phiếu
		*/		
		
		//ID của hợp đồng
		$invcID = $data->{"ioID"};		
		//ID của phiếu nhập kho
		$revNoteID = $data->{"revNoteID"};
		
		$ReceiptDate = strtotime($data->{"ioDate"});
		$revPerson = addslashes(json_encode($data->{"recvPeople"}));	
		$devPerson = addslashes(json_encode($data->{"devPeople"}));
		$roomOut = "";
		$recvRoom = "";
		$note = $data->{"note"};
		$ModifiedBy = $_SESSION['userID'];	
				
				
		$DiscountVND = $data->{"ioDisAmount"};
		$SubTotalVND = $data->{"ioSubAmount"};
		$VATAmountVND = $data->{"ioVatAmount"};
		$TotalVND = $data->{"ioTotalAmount"};
		$DisPercent = $data->{"ioDisPercent"};
		$VATPercent = $data->{"ioVatPercent"};		
		
		$success = true;
		
		//update IO to io_tbl
		$res = $oDB->stl_db_change($begin, $conn);
		
		$res = $ioObj->updateIORow($revNoteID,$invcID,date("y-m-d",$ReceiptDate),$revPerson,$devPerson,$note,$modifiedBy,$DiscountVND,$SubTotalVND,$VATAmountVND,$TotalVND,$DisPercent,$VATPercent);
		if($res != "OK") $success = false;
		
		//print_r($res);
		//save asset list	
		$assetArr = $data->{"assList"};
		$i = 0;
				
		//1. Duyệt theo danh sách loại thiết bị	
		while($assetArr[$i])
		{		
			$AssID = $assetArr[$i]->{"assID"};//ID của thiết bị
			
			$AssName = strtoupper($assetArr[$i]->{"assName"});//Tên thiết bị
			$CATCode = $assetArr[$i]->{"assCat"};//Loại thiết bị
			$Price = $assetArr[$i]->{"assPrice"};//Giá thiết bị
			$Amount = $assetArr[$i]->{"assAmount"};//Tổng tiền thiết bị
			
			$AssWar = "";//Bảo hành thiết bị
			$QRCode = "";
			$SerialNumber = "";
			$AssDescription = $assetArr[$i]->{"assDesc"};//Mô tả thiết bị
		
			$STAID = 1;//Tình trạng thiết bị		
			$Quantity = $assetArr[$i]->{"assQt"};//Số lượng theo loại
			$Unit = strtoupper($assetArr[$i]->{"assUnit"});	//Đơn vị tính		
			
			//Không dùng barcode
			//3.1. Insert vào trong asset_tbl với AssCode rỗng với số lượng theo loại
			$AssCode = "";
			//$AssName = "";
			$STAID=1;	
			$LocaID = 0;			
			
			$res = $ioObj->updateAsset($AssID,$AssCode,$AssName,$CATCode,$QRCode,$SerialNumber,$AssDescription,$STAID,$LocaID,$Quantity,$Unit,$ModifiedBy,$Warranty,$Price,$Amount);
			if($res != "OK") $success = false;
			
			$i++;
		}	
		
		if($success)//Nếu thành công, không có lỗi
		{
			//Commit
			$res = $oDB->stl_db_change($commit, $conn);
			
			$jsonArr["dataSearch"]["Message"] = "Chỉnh sửa thành công";
			$jsonArr["dataSearch"]["Status"] = "1";			
		}else{
			//Rollback
			$res = $oDB->stl_db_change($rollback, $conn);
			
			$jsonArr["dataSearch"]["Message"] = "Chỉnh sửa thất bại. Vui lòng kiểm tra lại";
			$jsonArr["dataSearch"]["Status"] = "0";
		}
			
		$jsonArr["dataSearch"]["TimeFinish"] = date("h:i:s:u");
		
		$json = json_encode($jsonArr["dataSearch"]);
		
	
	}
	
	echo $json;	
	$oDB->stl_closeConn($conn);
?>